%include	'Macros.inc'
;
;	������������ ���������� ������� ���������
;	-----------------------------------------
;
Dispatcher:
        call	Clear_screen		;������� ������
	call	Disp_sector		;����� ������� � ���������� �������
.M1:	Out_str	Invitation              ;����� �����������
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	cmp	al,0			;������ �����������?
	jne	.M3			;���, ����� ������ ������� 
	cmp	ah,44h			;������� F10?
	jne	.M2                     ;���, ��������� �������
	call    Clear_screen            ;������� �����
	stc				;CF <- 1
	jmp	.Exit                   ;�����
.M2:	call	Command	                ;��������� �������
.M3:	clc				;CF <- 0
.Exit:	jnc	.M1                     ;��������� ������
	ret
Invitation	db	'Enter command: $'
;
;	������������� ������
;	--------------------
; �����: AH - ����-���, ��������������� �������
; ������: .Table - ������� ���������
;
Command:
	push	bx
	mov	bx,.Table		;BX <- ����� �������
.M1:	cmp	byte[bx],0ffh		;����� �������?
	je	.Exit			;��, ���� ��� � �������
	cmp	ah,[bx]			;��� ���� � �������?
	je	.Dispatch		;��, ��������� �������
	add	bx,3			;���, ������� �
	clc				; ����������
	jmp	.M2			; �������� �������
.Dispatch: 
	inc	bx			;����� ���������
	call	[bx]			;����� ���������
.Exit:	stc				; CF <- 1
.M2:	jnc	.M1			;���������� ��� ������ �������� �������
	pop bx
	ret
; ������� �������� ����-���� ����������� ������ � ������
; ��������, ����������� ��������������� �������
.Table	db	3bh			;<F1>
	dw	Init_sector
	db	3dh			;<F3>
	dw	Next_sector
	db	3fh			;<F5>
	dw	Prev_sector
	db	40h			;<F6>
	dw	N_sector
	db	0ffh			;����� �������
%include	'Disp_sec.asm'		;������������� ��������